home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 April: Mac OS SDK / Dev.CD Apr 96 SDK / Dev.CD Apr 96 SDK1.toast / Development Kits (Disc 1) / OpenDoc Development Framework / ODFDev / ODF / Framewrk / FWPart / Include / FWIters.h < prev    next >
Encoding:
Text File  |  1995-11-08  |  11.2 KB  |  369 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWIters.h
  4. //    Release Version:    $ 1.0d11 $
  5. //
  6. //    Copyright:    © 1995 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9. //
  10. //    This file contains all the iterators defined by ODF.
  11. //
  12. //        - FW_CFacetIterator
  13. //            Wrapper for ODFacetIterator, safe for exception.
  14. //
  15. //        - FW_CFrameFacetIterator
  16. //            Allows you to iterator through all the facets of a display frame.
  17. //
  18. //        - FW_CEmbeddedODFacetsIterator
  19. //            Iterates trought all the facets embedded in one of your display facet for a specific proxy.
  20. //            If the embedding facet is NULL,  returns all the embedded facets for a proxy.
  21. //
  22. //        - FW_CProxyODFramesIterator
  23. //            Iterates trought all the frames belonging to a FW_MProxy.
  24.  
  25.  
  26. #ifndef FWITERS_H
  27. #define FWITERS_H
  28.  
  29. #ifndef FWSTDDEF_H
  30. #include "FWStdDef.h"
  31. #endif
  32.  
  33. #ifndef   FWAUTODE_H
  34. #include "FWAutoDe.h"
  35. #endif
  36.  
  37. #ifndef FWPART_H
  38. #include "FWPart.h"
  39. #endif
  40.  
  41. #ifndef FWPXYFRM_H
  42. #include "FWPxyFrm.h"
  43. #endif
  44. // ----- ODUtil -----
  45.  
  46. #ifndef FWORDCOL_H
  47. #include "FWOrdCol.h"
  48. #endif
  49.  
  50. // ----- OpenDoc Includes -----
  51.  
  52. #ifndef SOM_ODFacetIterator_xh
  53. #include <FacetItr.xh>
  54. #endif
  55.  
  56. #ifndef SOM_ODFrameFacetIterator_xh
  57. #include <FrFaItr.xh>
  58. #endif
  59.  
  60. #if FW_LIB_EXPORT_PRAGMAS
  61. #pragma lib_export on
  62. #endif
  63.  
  64. //========================================================================================
  65. //    Forward Declarations
  66. //========================================================================================
  67.  
  68. class FW_CLASS_ATTR FW_CPart;
  69. class FW_CLASS_ATTR FW_CFrame;
  70. class FW_CLASS_ATTR FW_CEmbeddingFrame;
  71. class FW_CLASS_ATTR FW_MProxy;
  72. class FW_CLASS_ATTR FW_CFrameFacetIterator;
  73. class FW_CLASS_ATTR ODFacet;
  74. class FW_CLASS_ATTR ODFrame;
  75. class FW_CLASS_ATTR FW_CProxyODFramesIterator;
  76. class FW_CLASS_ATTR FW_CPublishLink;
  77. class FW_CLASS_ATTR FW_CSubscribeLink;
  78.  
  79. //========================================================================================
  80. //    class FW_CODFrameFacetIterator
  81. //========================================================================================
  82.  
  83. class FW_CLASS_ATTR FW_CODFrameFacetIterator FW_AUTO_DESTRUCT_OBJECT
  84. {
  85. public:
  86.     FW_CODFrameFacetIterator(Environment* ev, ODFrame* odFrame);
  87.     virtual ~FW_CODFrameFacetIterator();
  88.  
  89.     ODFacet*        First(Environment* ev)
  90.                         {return fODFrameFacetIte->First(ev);}
  91.     ODFacet*        Next(Environment* ev)
  92.                         {return fODFrameFacetIte->Next(ev);}
  93.     
  94.     FW_Boolean        IsNotComplete(Environment* ev)
  95.                         {return fODFrameFacetIte->IsNotComplete(ev);}
  96.  
  97. private:
  98.     ODFrameFacetIterator     *fODFrameFacetIte;
  99. };
  100.  
  101. //========================================================================================
  102. //    class FW_CFrameFacetIterator
  103. //========================================================================================
  104.  
  105. class FW_CLASS_ATTR FW_CFrameFacetIterator : public FW_CODFrameFacetIterator
  106. {
  107. public:
  108.     FW_CFrameFacetIterator(Environment* ev, const FW_CFrame* frame);
  109.     virtual ~FW_CFrameFacetIterator();
  110. };
  111.  
  112. //========================================================================================
  113. //    class FW_CFacetIterator
  114. //========================================================================================
  115.  
  116. class FW_CLASS_ATTR FW_CFacetIterator FW_AUTO_DESTRUCT_OBJECT
  117. {
  118.  
  119. public:
  120.     FW_CFacetIterator(Environment* ev, 
  121.                         ODFacet* facet,
  122.                         ODTraversalType traversalType,
  123.                         ODSiblingOrder siblingOrder);
  124.     ~FW_CFacetIterator();
  125.  
  126.     ODFacet*        First(Environment* ev)
  127.                         {return fODFacetIterator->First(ev);}
  128.     ODFacet*        Next(Environment* ev)
  129.                         {return fODFacetIterator->Next(ev);}
  130.     FW_Boolean        IsNotComplete(Environment* ev)
  131.                         {return fODFacetIterator->IsNotComplete(ev);}
  132.     void            SkipChildren(Environment* ev)
  133.                         {fODFacetIterator->SkipChildren(ev);}
  134.     
  135. private:
  136.     ODFacetIterator         *fODFacetIterator;
  137. };
  138.  
  139. //========================================================================================
  140. //    class FW_CPresentationFrameIterator
  141. //========================================================================================
  142.  
  143. class FW_CLASS_ATTR FW_CPresentationFrameIterator FW_AUTO_DESTRUCT_OBJECT
  144. {
  145.  
  146. public:
  147.     FW_CPresentationFrameIterator(FW_CPresentation* presentation);
  148.     ~FW_CPresentationFrameIterator();
  149.  
  150.     FW_CFrame*        First()
  151.                         {return (FW_CFrame*)fIterator->First();}
  152.     FW_CFrame*        Next()
  153.                         {return (FW_CFrame*)fIterator->Next();}
  154.     FW_CFrame*        Last()
  155.                         {return (FW_CFrame*)fIterator->Last();}
  156.     FW_CFrame*        Previous()
  157.                         {return (FW_CFrame*)fIterator->Previous();}
  158.     FW_Boolean        IsNotComplete()
  159.                         {return fIterator->IsNotComplete();}
  160.     
  161. private:
  162.     FW_COrderedCollectionIterator*    fIterator;
  163. };
  164.  
  165. //========================================================================================
  166. //    class FW_CPresentationFacetIterator
  167. //========================================================================================
  168.  
  169. class FW_CLASS_ATTR FW_CPresentationFacetIterator FW_AUTO_DESTRUCT_OBJECT
  170. {
  171. public:
  172.     FW_CPresentationFacetIterator(Environment* ev, FW_CPresentation* presentation);
  173.     ~FW_CPresentationFacetIterator();
  174.  
  175.     ODFacet*        First(Environment* ev);
  176.     ODFacet*        Next(Environment* ev);
  177.     FW_Boolean        IsNotComplete(Environment* ev)
  178.                         {return fCurrentFacet != NULL;}
  179.  
  180. private:
  181.     ODFacet*        ResetFacetIterator(Environment* ev, FW_CFrame* frame);
  182.     
  183. private:
  184.     FW_CPresentationFrameIterator    fFrameIterator;
  185.     FW_CFrameFacetIterator*            fFacetIterator;
  186.     ODFacet*                        fCurrentFacet;
  187. };
  188.  
  189. //========================================================================================
  190. //    FW_CEmbeddedODFacetsIterator
  191. //========================================================================================
  192.  
  193. class FW_CLASS_ATTR FW_CEmbeddedODFacetsIterator FW_AUTO_DESTRUCT_OBJECT
  194. {
  195. public:
  196.     FW_CEmbeddedODFacetsIterator(Environment* ev, const FW_MProxy* proxy, ODFacet* embeddingFacet, ODSiblingOrder siblingOrder);
  197.     ~FW_CEmbeddedODFacetsIterator();
  198.  
  199.     ODFacet*        First(Environment* ev);
  200.     ODFacet*        Next(Environment* ev);
  201.     FW_Boolean        IsNotComplete(Environment* ev);
  202.  
  203. private:
  204.     void            FindNext(Environment* ev);
  205.     
  206. private:
  207.     ODFacetIterator*    fODFacetIterator;
  208.     const FW_MProxy*    fProxy;
  209.     ODFacet*            fODFacet;
  210. };
  211.  
  212. //========================================================================================
  213. //    class FW_CProxyProxyFrameIterator
  214. //========================================================================================
  215.  
  216. class FW_CLASS_ATTR FW_CProxyProxyFrameIterator FW_AUTO_DESTRUCT_OBJECT
  217. {
  218. public:
  219.     FW_CProxyProxyFrameIterator(const FW_MProxy* proxy);
  220.     ~FW_CProxyProxyFrameIterator();
  221.  
  222.     FW_CProxyFrame*    First()
  223.                         {return (FW_CProxyFrame*)fIterator->First();}
  224.     FW_CProxyFrame*    Next()
  225.                         {return (FW_CProxyFrame*)fIterator->Next();}
  226.     FW_CProxyFrame*    Last()
  227.                         {return (FW_CProxyFrame*)fIterator->Last();}
  228.     FW_CProxyFrame*    Previous()
  229.                         {return (FW_CProxyFrame*)fIterator->Previous();}
  230.     FW_Boolean        IsNotComplete()
  231.                         {return fIterator->IsNotComplete();}
  232.                             
  233. private:
  234.     FW_COrderedCollectionIterator         *fIterator;
  235. };
  236.  
  237. //========================================================================================
  238. //    class FW_CProxyEmbeddedFrameIterator
  239. //========================================================================================
  240.  
  241. class FW_CLASS_ATTR FW_CProxyEmbeddedFrameIterator FW_AUTO_DESTRUCT_OBJECT
  242. {
  243. public:
  244.     FW_CProxyEmbeddedFrameIterator(Environment* ev, const FW_MProxy* proxy);
  245.     ~FW_CProxyEmbeddedFrameIterator();
  246.  
  247.     ODFrame*        First(Environment* ev);
  248.     ODFrame*        Next(Environment* ev);
  249.     ODFrame*        Last(Environment* ev);
  250.     ODFrame*        Previous(Environment* ev);
  251.     FW_Boolean        IsNotComplete(Environment* ev)
  252.                         {return fIterator.IsNotComplete();}
  253.                             
  254. private:
  255.     ODFrame*        PrivNext(Environment* ev, FW_CProxyFrame* proxyFrame);
  256.     ODFrame*        PrivPrevious(Environment* ev, FW_CProxyFrame* proxyFrame);
  257.                                 
  258. private:
  259.     FW_CProxyProxyFrameIterator     fIterator;
  260.     ODFrame*                        fCurrentFrame;
  261. };
  262.  
  263. //========================================================================================
  264. //    class FW_CFrameProxyFrameIterator
  265. //========================================================================================
  266.  
  267. class FW_CLASS_ATTR FW_CFrameProxyFrameIterator FW_AUTO_DESTRUCT_OBJECT
  268. {
  269. public:
  270.     FW_CFrameProxyFrameIterator(const FW_CEmbeddingFrame* frame);
  271.     ~FW_CFrameProxyFrameIterator();
  272.  
  273.     FW_CProxyFrame*    First()
  274.                         {return (FW_CProxyFrame*)fIterator->First();}
  275.     FW_CProxyFrame*    Next()
  276.                         {return (FW_CProxyFrame*)fIterator->Next();}
  277.     FW_CProxyFrame*    Last()
  278.                         {return (FW_CProxyFrame*)fIterator->Last();}
  279.     FW_CProxyFrame*    Previous()
  280.                         {return (FW_CProxyFrame*)fIterator->Previous();}
  281.     FW_Boolean        IsNotComplete()
  282.                         {return fIterator->IsNotComplete();}
  283.                             
  284. private:
  285.     FW_COrderedCollectionIterator         *fIterator;
  286. };
  287.  
  288. //========================================================================================
  289. //    class FW_CFrameEmbeddedFrameIterator
  290. //========================================================================================
  291.  
  292. class FW_CLASS_ATTR FW_CFrameEmbeddedFrameIterator FW_AUTO_DESTRUCT_OBJECT
  293. {
  294. public:
  295.     FW_CFrameEmbeddedFrameIterator(Environment* ev, const FW_CEmbeddingFrame* frame);
  296.     ~FW_CFrameEmbeddedFrameIterator();
  297.  
  298.     ODFrame*        First(Environment* ev);
  299.     ODFrame*        Next(Environment* ev);
  300.     ODFrame*        Last(Environment* ev);
  301.     ODFrame*        Previous(Environment* ev);
  302.     FW_Boolean        IsNotComplete(Environment* ev)
  303.                         {return fCurrentFrame != NULL;}
  304.  
  305. private:
  306.     ODFrame*        PrivNext(Environment* ev, FW_CProxyFrame* proxyFrame);
  307.     ODFrame*        PrivPrevious(Environment* ev, FW_CProxyFrame* proxyFrame);
  308.                                 
  309. private:
  310.     FW_CFrameProxyFrameIterator     fIterator;
  311.     ODFrame*                        fCurrentFrame;
  312. };
  313.  
  314. //========================================================================================
  315. //    class FW_CPartPublishIterator
  316. //========================================================================================
  317.  
  318. class FW_CLASS_ATTR FW_CPartPublishIterator FW_AUTO_DESTRUCT_OBJECT
  319. {
  320.   public:
  321.     FW_CPartPublishIterator(const FW_CPart* part);
  322.     ~FW_CPartPublishIterator();
  323.  
  324.     FW_CPublishLink*    First()
  325.                             {return (FW_CPublishLink*)fIterator->First();}
  326.     FW_CPublishLink*    Next()
  327.                             {return (FW_CPublishLink*)fIterator->Next();}
  328.     FW_CPublishLink*    Last()
  329.                             {return (FW_CPublishLink*)fIterator->Last();}
  330.     FW_CPublishLink*    Previous()
  331.                             {return (FW_CPublishLink*)fIterator->Previous();}
  332.     FW_Boolean            IsNotComplete()
  333.                             {return fIterator->IsNotComplete();}
  334.                             
  335.   private:
  336.     FW_COrderedCollectionIterator*    fIterator;
  337. };
  338.  
  339. //========================================================================================
  340. //    class FW_CPartSubscribeIterator
  341. //========================================================================================
  342.  
  343. class FW_CLASS_ATTR FW_CPartSubscribeIterator FW_AUTO_DESTRUCT_OBJECT
  344. {
  345.   public:
  346.     FW_CPartSubscribeIterator(const FW_CPart* part);
  347.     ~FW_CPartSubscribeIterator();
  348.  
  349.     FW_CSubscribeLink*    First()
  350.                             {return (FW_CSubscribeLink*)fIterator->First();}
  351.     FW_CSubscribeLink*    Next()
  352.                             {return (FW_CSubscribeLink*)fIterator->Next();}
  353.     FW_CSubscribeLink*    Last()
  354.                             {return (FW_CSubscribeLink*)fIterator->Last();}
  355.     FW_CSubscribeLink*    Previous()
  356.                             {return (FW_CSubscribeLink*)fIterator->Previous();}
  357.     FW_Boolean            IsNotComplete()
  358.                             {return fIterator->IsNotComplete();}
  359.                             
  360.   private:
  361.     FW_COrderedCollectionIterator*    fIterator;
  362. };
  363.  
  364. #if FW_LIB_EXPORT_PRAGMAS
  365. #pragma lib_export off
  366. #endif
  367.  
  368. #endif
  369.